// 给定一个整数数组 A，对于每个整数 A[i]，我们可以选择任意 x 满足 -K <= x <= K，并将 x 加到 A[i] 中。
// 在此过程之后，我们得到一些数组 B。
// 返回 B 的最大值和 B 的最小值之间可能存在的最小差值。

// 示例 1：
// 输入：A = [1], K = 0
// 输出：0
// 解释：B = [1]

// 示例 2：
// 输入：A = [0,10], K = 2
// 输出：6
// 解释：B = [2,8]

// 示例 3：
// 输入：A = [1,3,6], K = 3
// 输出：0
// 解释：B = [3,3,3] 或 B = [4,4,4]

// 提示：
//     1 <= A.length <= 10000
//     0 <= A[i] <= 10000
//     0 <= K <= 10000

////这个效率太低。。竟然才打败了10%。。。108ms
// var smallestRangeI = function(A, K) {
// 	if(A.length === 0) {
// 		return 0;
// 	}
//     A.sort(function(a, b) {
//     	return a - b;
//     })
//     let result = A[A.length - 1] - A[0] - 2 * K;
//     return result <= 0? 0: result;
// };
var smallestRangeI = function(A, K) {
	if(A.length === 0) {
		return 0;
	}
	let min = A[0];
	let max = A[0];
    for(let i = 0; i < A.length; i++) {
    	max = Math.max(max, A[i]);
    	min = Math.min(min, A[i]);
    }
    return Math.max(0, max - min - 2 * K);
};
console.log(smallestRangeI([1,3,6], 3));


